actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
+ actor.freeze();
+
if (this._clearAnimationInfo(actor))
this._shellwm.completed_size_change(actor);
});
this._resizePending.add(actor);
- actor.__animationInfo = { clone: actorClone,
- oldRect: oldFrameRect,
- destroyId };
+ actor.__animationInfo = {
+ clone: actorClone,
+ oldRect: oldFrameRect,
+ frozen: true,
+ destroyId,
+ };
}
_sizeChangedWindow(shellwm, actor) {
// Now unfreeze actor updates, to get it to the new size.
// It's important that we don't wait until the animation is completed to
// do this, otherwise our scale will be applied to the old texture size.
- shellwm.completed_size_change(actor);
+ actor.thaw();
+ actor.__animationInfo.frozen = false;
}
_clearAnimationInfo(actor) {
if (actor.__animationInfo) {
actor.__animationInfo.clone.destroy();
actor.disconnect(actor.__animationInfo.destroyId);
+ if (actor.__animationInfo.frozen)
+ actor.thaw();
+
delete actor.__animationInfo;
return true;
}
actor.translation_x = 0;
actor.translation_y = 0;
this._clearAnimationInfo(actor);
+ this._shellwm.completed_size_change(actor);
}
if (this._resizePending.delete(actor)) {